(function($){
	$.fn.ZTable = function(options){
		var settings = $.extend({
			//Default options
			load_callback : function(){}
		}, options);
		
		function getCheckbox(){
			//Deprecated function
			checkboxes = $('input:checked');
			id = $(checkboxes[0]).val();
			$selected = $('tr[value="' + id +'"]');
		}
		
		this.getMode = function(){
			return this.attr('mode');
		}
		
		this.setMode = function(mode){
			//Argument:
			// mode --- 'normal' or 'edit'
			return this.attr('mode', mode);
		}
		
		this.getHighlightedRow = function(){
			return $(this).find('.highlight');
		}
		
		// Initialization
		table = this;
		
		// Set row select handler
		this.find( 'tbody > tr').click( function(event) {
		    $(this).addClass('highlight').siblings().removeClass('highlight');

		    if (event.target.type == 'checkbox'){
		    	event.stopPropagation();
		    }else{
		     	$checkbox = $(this).find('input[name="selected"]');
		    	if($checkbox.is(':checked')){
		    		$checkbox.prop('checked', false);
		    	}else{
		    		$checkbox.prop('checked', true);
				}
		    }
		    
		    if(table.getMode() == 'edit'){
		    	settings.load_callback( $(this) );
		    }
		    	
		});
		
		// Set checkbox handler
		this.find('input[name="selected"]:checked').click(function(){
			$(this).prop('checked', false);	
		});

		return this;

	}//End of ZTable
	
}(jQuery));